(function ($) {
    $.fn.serializeFormJSON = function () {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function () {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

    var page = {
        init: function () {
            var that = this;

            that.reloadTable();

            $('#btn_add').click(function () {
                // 打开模态窗口且点击其他区域不关闭
                $('#addObjModal').modal({backdrop: 'static', keyboard: false});
            });

            // 钩子
            $('#addObjModal').on('show.bs.modal', function (event) {

                // $('#uploadfile').fileinput('refresh');
                // $('#uploadfile').fileinput('clear');
                // $('#uploadfile').fileinput('destroy');
                // $('#uploadfile').fileinput('enable');

                $('#uploadfile').fileinput('cancel');
                $('#uploadfile').fileinput('clear');
                // $('#uploadfile').fileinput('reset');

                $(this).find('#addObjForm select[name="fileCategory"]').val('');
                $("#addObjForm textarea").val("");
            });

            $('.add-obj-btn').on('click', function () {
                $('#uploadfile').fileinput('upload');
                $("#tb_base").bootstrapTable('refresh'); // 未执行
            });

            $("#uploadfile").fileinput({
                language: 'zh', //设置语言
                uploadUrl: "/files/upload", //上传的地址
                uploadExtraData: {"fileCategory": '222222', "description": "sddd"},
                deleteUrl: "/file/delete",
                //deleteExtraData:{"id": 1, "fileName":'123.mp3'},
                allowedFileExtensions: ['jpg', 'gif', 'png', 'docx', 'doc', 'html', 'txt', 'pdf', 'xls', 'xlsx', 'rar', 'zip', 'mp4', 'mp3', 'avi', 'mov', 'bak'],//接收的文件后缀
                uploadAsync: true, //默认异步上传
                showUpload: false, //是否显示上传按钮
                showRemove: true, //显示移除按钮
                showPreview: true, //是否显示预览
                showCaption: false,//是否显示标题
                // browseClass:"btn btn-primary", //按钮样式    
                // dropZoneEnabled: false,//是否显示拖拽区域
                //minImageWidth: 50, //图片的最小宽度
                //minImageHeight: 50,//图片的最小高度
                //maxImageWidth: 1000,//图片的最大宽度
                //maxImageHeight: 1000,//图片的最大高度
                //maxFileSize:0,//单位为kb，如果为0表示不限制文件大小
                // minFileCount: 1,
                maxFileCount: 5, //表示允许同时上传的最大文件个数
                enctype: 'multipart/form-data',
                validateInitialCount: true,
                previewFileIcon: "<i class='mdi mdi-eye-off'></i>",
                browseIcon: "<i class='mdi mdi-folder-open'></i>",
                removeIcon: "<i class='mdi mdi-delete-forever'></i>",
                // cancelIcon: "<i class='mdi mdi-compass'></i>",
                uploadIcon: "<i class='mdi mdi-upload'></i>",
                textEncoding: "GBK",
                fileActionSettings: {
                    showRemove: true,
                    showUpload: false,
                    showZoom: true,
                    showDrag: true,
                    removeIcon: "<i class='mdi mdi-delete-forever'></i>",
                    dragIcon: "<i class='mdi mdi-stop-circle'></i>",
                    zoomIcon: "<i class='mdi mdi-eye'></i>",
                    indicatorNew: "<i class='mdi mdi-cloud-upload'></i>",
                    indicatorSuccess: "<i class='mdi mdi-cloud-check'></i>",
                    indicatorError: "<i class='mdi mdi-cloud-off-outline'></i>",
                    indicatorLoading: "<i class='mdi mdi-cloud-sync'></i>"
                },
                previewZoomButtonIcons: {
                    prev: '<i class="mdi mdi-skip-previous"></i>',
                    next: '<i class="mdi mdi-skip-next"></i>',
                    toggleheader: '<i class="mdi mdi-page-layout-header"></i>',
                    fullscreen: '<i class="mdi mdi-arrow-expand-all"></i>',
                    borderless: '<i class="mdi mdi-television"></i>',
                    close: '<i class="mdi mdi-window-close"></i>'
                },
                msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}！",
                msgFileNotFound: '文件 "{name}" 未找到!',
                msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件'

            }).on('filepreupload', function (event, data, previewId, index) {
                layer.msg("批量上传成功！");
                $('.fileinput-cancel-button').attr("disabled", "disabled");
                $('.add-obj-btn').attr("disabled", "disabled");
                $("#tb_base").bootstrapTable('refresh'); // 未执行
            }).on('filebatchuploaderror', function (event, data, msg) {
                layer.msg("批量上传失败！");
            }).on("filesuccessremove", function (event, data, previewId, index) {
                layer.msg("上传成功的删除回调！");
                $("#tb_base").bootstrapTable('refresh');
            }).on('filepredelete', function (event, key, jqXHR, data) {
                layer.msg("预览的删除回调！");
            });

            $('#btn_gallery').click(function () {
                $.ajax({
                    type: "get",
                    url: "/files/images",
                    cache: false,
                    data: null,
                    dataType: "json",
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                        if (data.code == "0") {
                            // 正确的其他处理...
                            // layer.msg(data.msg, {icon: 6});
                            // 使用相册
                            layer.photos({
                                photos: data.images,
                                anim: 0
                                // shift:5,  // 动画类型 0 -6 选择
                                // area:['600px']   // 调节寬width height  ['600px','500px']
                                // closeBtn:1  // 是否显示关闭按钮 默认为0 不显示 1/2 2种风格
                            });
                        } else {
                            // 错误的其他处理...
                            layer.msg(data.msg, {icon: 5});
                        }
                    },
                    error: function (E) {
                        console.log(E);
                        layer.msg('提交系统失败，请稍后再试', {icon: 2});
                    }
                });

            });

            $('#exampleModal').on('show.bs.modal', function (event) {
                var button = $(event.relatedTarget);
                var recipient = button.data('whatever');
                var modal = $(this);
                modal.find('.modal-body img').attr("src", recipient);
            });

        },
        reloadTable: function () {
            $('#tb_base').bootstrapTable({
                classes: 'table table-bordered table-hover table-striped',
                url: '/files',
                method: 'get',
                // dataType: 'jsonp',        // 因为本示例中是跨域的调用,所以涉及到ajax都采用jsonp,
                uniqueId: 'id',
                idField: 'id',             // 每行的唯一标识字段
                toolbar: '#toolbar',       // 工具按钮容器
                //clickToSelect: true,     // 是否启用点击选中行
                showColumns: true,         // 是否显示所有的列
                showRefresh: true,         // 是否显示刷新按钮
                showToggle: true,        // 是否显示详细视图和列表视图的切换按钮(clickToSelect同时设置为true时点击会报错)
                pagination: true,                    // 是否显示分页
                sortOrder: "asc",                    // 排序方式
                queryParams: function (params) {
                    var temp = {
                        limit: params.limit,
                        offset: params.offset,
                        pageSize: params.limit,   //页面大小
                        pageNum: (params.offset / params.limit) + 1,  //页码
                        isAsc: params.order,          // 排序方式'asc' 'desc'
                        orderByColumn: params.sort  // 排序的列名
                    };
                    return temp;
                },                                   // 传递参数
                sidePagination: "server",            // 分页方式：client客户端分页，server服务端分页
                pageNumber: 1,                       // 初始化加载第一页，默认第一页
                pageSize: 10,                        // 每页的记录行数
                pageList: [5, 10, 25, 50, 100],         // 可供选择的每页的行数
                //search: true,                      // 是否显示表格搜索，此搜索是客户端搜索
                //showExport: true,        // 是否显示导出按钮, 导出功能需要导出插件支持(tableexport.min.js)
                //exportDataType: "basic", // 导出数据类型, 'basic':当前页, 'all':所有数据, 'selected':选中的数据

                columns: [{
                    checkbox: true
                }, {
                    title: '序号',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return index + 1;
                    }
                }, {
                    field: 'id',
                    align: 'center',
                    visible: false, // false不显示
                    title: '文件编号'
                }, {
                    field: 'fileCategory',
                    visible: false, // false不显示
                    title: '文件类别'
                }, {
                    field: 'logicalName',
                    title: '文件名称'
                }, {
                    field: 'description',
                    visible: false, // false不显示
                    title: '文件描述'
                }, {
                    // field: 'serverRootDir',
                    title: '预览',
                    align: 'center',
                    formatter: function (value, row) {
                        return '<a data-toggle="modal" data-target="#exampleModal" data-whatever="http://192.168.56.27:8089/' + row.serverRootDir + '">预览</a>';

                    },
                    events: {
                        'click .preview-btn': function (event, value, row, index) {
                            // previewFile(row.id);
                            alert(row.id);
                        }
                    }
                }, {
                    title: '文件详情',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return '<a data-toggle="modal" data-target="#gridSystemModal"> 详情 </a>';
                        // return '<a href="../images/users/avatar.jpg">详情</a>';
                    }
                }, {
                    title: '下载',
                    align: 'center',
                    formatter: function (value, row) {
                        // return '<a href="#!" class="btn btn-xs btn-default download-btn" title="删除" data-toggle="tooltip"><i class="mdi mdi-window-close"></i></a>';
                        return '<a href="#!" class="download-btn">下载</a>';
                        // return '<a href="/file/download/'+row.id+'" >下载</a>';

                    },
                    events: {
                        'click .download-btn': function (event, value, row, index) {
                            // downloadFile(row.id);

                            var url = "/files/download/" + row.id;
                            window.open(url);
                        }
                    }
                }, {
                    field: 'extentionName',
                    title: '扩展名',
                    sortable: true    // 是否排序
                }, {
                    field: 'fileSize',
                    title: '文件大小(KB)'
                }, {
                    field: 'serverGroup',
                    visible: false, // false不显示
                    title: '文件组别'
                }, {
                    field: 'physicalName',
                    visible: false, // false不显示
                    title: '物理名称'
                }, {
                    field: 'serverRootDir',
                    title: '文件位置'
                }, {
                    field: 'createTime',
                    title: '创建时间',
                    sortable: true    // 是否排序
                }, {
                    field: 'creator',
                    title: '创建者',
                    sortable: true    // 是否排序
                }, {
                    field: 'delFlag',
                    title: '删除标识'
                }],
                onLoadSuccess: function (data) {
                    $("[data-toggle='tooltip']").tooltip();
                }
            });
        }
    };

    page.init();

})(jQuery);